import requests
import pymongo
import hashlib

# 连接mongodb服务器
client = pymongo.MongoClient(host='localhost', port=27017)
# 选择数据库
db = client.python
# 选择集合
xfz = db.xfz

# 请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36',
    'referer': 'https://www.xfz.cn/',
    'x-requested-with': 'XMLHttpRequest'
}

i = 1   # 页码
# 分页面请求
while True:
    url = f'https://www.xfz.cn/api/website/articles/?p={i}&n=100&type='
    resp = requests.get(url, headers=headers)
    json_data = resp.json()
    if not json_data.get('data'):
        # 如果没有数据了，则退出循环
        break
    else:
        print(f'正在采集第{i}页数据...')
        for item in json_data.get('data'):
            data = {
                'title': item.get('title'),
                'time': item.get('time'),
            }
            # 获取hash值，使用hash值作为数据的_id,在与入时候判断是否重复
            hash_value = hashlib.md5(str(data).encode()).hexdigest()
            # 先查询数据库中是否有重复数据
            if not xfz.find_one({'_id': hash_value}):
                # 添加_id 键
                data.update({'_id': hash_value})
                xfz.insert_one(data)
        print(f'第{i}页数据添加成功！')
        i += 1  # 更新页码


print('所有数据采集完成~~~')
